package com.houweishi.module.wageOperate.service;

import com.houweishi.common.core.domain.AjaxResult;
import com.houweishi.module.wageOperate.domain.RenewalSearchVO;
import com.houweishi.module.wageOperate.domain.WageOperate;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 工资计算Service接口
 * 
 * @author yqq
 * @date 2023-06-20
 */
public interface IWageOperateService 
{
    /**
     * 查询工资计算
     * 
     * @param id 工资计算主键
     * @return 工资计算
     */
    public WageOperate selectWageOperateById(Long id);

    /**
     * 查询工资计算列表
     * 
     * @param wageOperate 工资计算
     * @return 工资计算集合
     */
    public List<WageOperate> selectWageOperateList(WageOperate wageOperate);

    /**
     * 批量新增工资计算
     * 
     * @param wageOperateList 工资计算
     * @return 结果
     */
    public void insertBathWageOperate(List<WageOperate> wageOperateList);


    /**
     * 批量新增工资计算
     *
     * @param wageOperate 工资计算
     * @return 结果
     */
    public int insertWageOperate(WageOperate wageOperate);

    /**
     * 修改工资计算
     * 
     * @param wageOperate 工资计算
     * @return 结果
     */
    public int updateWageOperate(WageOperate wageOperate);

    /**
     * 批量删除工资计算
     * 
     * @param ids 需要删除的工资计算主键集合
     * @return 结果
     */
    public int deleteWageOperateByIds(Long[] ids);

    /**
     * 删除工资计算信息
     * 
     * @param id 工资计算主键
     * @return 结果
     */
    public int deleteWageOperateById(Long id);

    /**
     * 更新工资计算表数据
     * @return
     */
    AjaxResult renewalData();

    /**
     * 计算工资计算表考勤
     * @param renewalSearchVO
     * @return
     */
    AjaxResult renewalClocking(RenewalSearchVO renewalSearchVO);

    /**
     * 计算工资
     * @param renewalSearchVO
     * @return
     */
    AjaxResult calcSalary(RenewalSearchVO renewalSearchVO);

    /**
     * 计算工资合计
     * @param renewalSearchVO
     * @return
     */
    AjaxResult calcSalarySum(RenewalSearchVO renewalSearchVO);

    /**
     * 保存工资历史记录
     * @param renewalSearchVO
     * @return
     */
    AjaxResult saveWageOperateHistory(RenewalSearchVO renewalSearchVO);

    /**
     * 公开当月薪资
     * @param renewalSearchVO
     * @return
     */
    AjaxResult publicToStaff(RenewalSearchVO renewalSearchVO);

    /**
     * 导出
     * @param renewalSearchVO
     */
    void export(HttpServletResponse response,RenewalSearchVO renewalSearchVO);
}
